class Solution {  //根据单调性(正整数)，利用"同向是双指针"(滑动窗口)
public:
    int minSubArrayLen(int target, vector<int>& nums) {
        int n = nums.size(), sum = 0, len = INT_MAX;
        for(int left = 0, right = 0; right < n; right++) //定义窗口的左右区间
        {
            sum += nums[right]; //进窗口
            while(sum >= target)  //判断
            {
                len = min(len, right - left + 1);  //更新结果
                sum -= nums[left++];  //将值"踢出去"，出窗口
            }
        }
        return len == INT_MAX ? 0 : len;
    }
};